/**
 * 顺序表的实现
 * 
 */

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 50		// 线性表的最大长度
#define ElemType int    // 元素存储类型
#define bool int
#define true !0
#define false 0

typedef struct {
	ElemType data[MAX_SIZE];
	int length;			// 顺序表当前长度
} SqList;

// 插入元素
bool ListInsert(SqList& L, int index, ElemType data);

//删除操作
bool ListDelete(SqList &L, int index, ElemType &data);

//按值查找
int LocateElem(SqList& L, ElemType elem);

int main()
{

	return 0;
}

bool ListInsert(SqList& L, int index, ElemType data)
{
	//判断插入的位置是否合法
	if(index < 1 || index > L.length) return false;
	//判断插入的空间是否已满
	if(L.length > MAX_SIZE) return false;

	//插入: 将index-1(index)及其以后的元素往后移动,空出index位置
	for(int i=5; i >= index; i--) L.data[i+1] = L.data[i];
	L.data[index-1]=data;
	//顺序表长度+1
	L.length++;
	return true;
}

bool ListDelete(SqList &List, int index, ElemType &elem)
{
	//判断当前顺序表是否为空
	if(L.length == 0) return false;
	//判断删除的位置是否合法
	if(index < 1 || index > L.length) return false;

	elem=L.data[index - 1];
	printf("删除的元素为:%d\n", elem);
	//将index后面的元素向前移动
	for(int i=index; i< L.length; i++) L.data[i-1] = L.data[i];
	//修改length长度
	L.length--;
	return true;
}

int LocateElem(SqList& L, ElemType elem)
{
	for(int i=0; i<L.length; i++) {
		if(L.data[i] == elem) return i+1;
	}
	return 0;	//查找失败返回0
}